> ## Documentation Index
> Fetch the complete documentation index at: https://sequence-0fb8d9e6-relayer_docs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Unreal Ecosystem Wallet Authentication

> Ecosystem Wallet Documentation for Sequence's Unreal SDK.

Start with an implicit session which is restricted to contracts built by Sequence.
Alternatively, you can choose to add a [Permissions](/sdk/unreal/wallets/ecosystem-wallet/permissions) object to each Sign In call, if you want to connect to an
explicit session directly.

### Get Ecosystem Config

Get configuration data from the Ecosystem. This includes data such as the name, description, enabled chains and auth providers.

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-relayer_docs/WrjrSprbhq9p8G24/images/unreal/ecosystem/get_ecosystem_config.png?fit=max&auto=format&n=WrjrSprbhq9p8G24&q=85&s=b0b75ffb5377ba39eeaf33471d0d90ca" width="1910" height="930" data-path="images/unreal/ecosystem/get_ecosystem_config.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<FEcosystemConfig> SuccessCallback = [this, OnSuccess](const FEcosystemConfig& Config)
    {
        // Ecosystem Name: Config.Name
        // Supported Chains: Config.SupportedChains
        // Auth Providers: Config.EnabledProviders
    };

    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceConnect* Connect = NewObject<USequenceConnect>();
    Connect->GetEcosystemConfig(SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>

## Sign In with Email

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-relayer_docs/ucv40TOkiu_4QScw/images/unreal/ecosystem/sign_in_email.png?fit=max&auto=format&n=ucv40TOkiu_4QScw&q=85&s=37e19d3d498a9610620cbe84b7d908ba" width="967" height="500" data-path="images/unreal/ecosystem/sign_in_email.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<bool> SuccessCallback = [this, OnSuccess](bool Result) { };
    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceConnect* Connect = NewObject<USequenceConnect>();
    Connect->SignInWithEmail(Email, Permissions, SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>

## Sign In with Google

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-relayer_docs/ucv40TOkiu_4QScw/images/unreal/ecosystem/sign_in_google.png?fit=max&auto=format&n=ucv40TOkiu_4QScw&q=85&s=96d26f63f23208edcf152b40d66b9f4c" width="967" height="500" data-path="images/unreal/ecosystem/sign_in_google.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<bool> SuccessCallback = [this, OnSuccess](bool Result) { };
    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceConnect* Connect = NewObject<USequenceConnect>();
    Connect->SignInWithGoogle(Permissions, SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>

## Sign In with Apple

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-relayer_docs/ucv40TOkiu_4QScw/images/unreal/ecosystem/sign_in_apple.png?fit=max&auto=format&n=ucv40TOkiu_4QScw&q=85&s=8825b569831fb9c6c851f1fccb0301ab" width="967" height="500" data-path="images/unreal/ecosystem/sign_in_apple.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<bool> SuccessCallback = [this, OnSuccess](bool Result) { };
    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceConnect* Connect = NewObject<USequenceConnect>();
    Connect->SignInWithApple(Permissions, SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>

## Sign In with Passkey

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-relayer_docs/ucv40TOkiu_4QScw/images/unreal/ecosystem/sign_in_passkey.png?fit=max&auto=format&n=ucv40TOkiu_4QScw&q=85&s=4a7bfab7ad0fc6aa29baca2dfc454ff2" width="967" height="500" data-path="images/unreal/ecosystem/sign_in_passkey.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<bool> SuccessCallback = [this, OnSuccess](bool Result) { };
    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceConnect* Connect = NewObject<USequenceConnect>();
    Connect->SignInWithPasskey(Permissions, SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>

## Sign In with Mnemonic

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-relayer_docs/ucv40TOkiu_4QScw/images/unreal/ecosystem/sign_in_mnemonic.png?fit=max&auto=format&n=ucv40TOkiu_4QScw&q=85&s=7e2cc800620eb63f528faf33b6251d3a" width="967" height="500" data-path="images/unreal/ecosystem/sign_in_mnemonic.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<bool> SuccessCallback = [this, OnSuccess](bool Result) { };
    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceConnect* Connect = NewObject<USequenceConnect>();
    Connect->SignInWithMnemonic(Permissions, SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>
